TODO
Date: 2006-11-20

http://www.netlib.org/lapack/
http://www.netlib.org/c/meschach/ (not GPL'ed, but excellent implementation!)

la.c: write:
  new gmath               function                 old MESCHACH

 G_vector_free()     free vector memory              #define V_FREE(vec) ( v_free(vec),  (vec)=(VEC *)NULL )
                                                     int v_free(vec)
                                                          VEC     *vec;
 G_vector_sub()      Subtract two vectors:           VEC *v_sub(vec1,vec2,out)
                                                          VEC *vec1,*vec2,*out;
 G_vector_norm1()    Calculate 1-norm of vector      #define v_norm1(x)  _v_norm1(x,VNULL)
                                                     double _v_norm1(x,scale)
                                                          VEC *x, *scale;
 G_matrix_scalar_mult() Scalar-matrix multiplication MAT *sm_mlt(scalar,matrix,out)
                                                          double  scalar;
                                                          MAT  *matrix,*out;
 G_matrix_stdin()    stdin read-function "m_input()" #define m_input(mat) m_finput(stdin,mat)
                                                     MAT *m_finput(FILE *fp,MAT *out);
 G_vector_stdin()    stdin read-function "v_input()" #define v_input(vec) v_finput(stdin,vec)
                                                     VEC *v_finput(FILE *fp,VEC *out);

Sample text matrix for G_matrix_stdin()
# comment
# enter row by col
Matrix: 4 by 6
row0:  8.87  13.14  11.71  35.85  28.26 10.54
row1: 13.59  20.12  19.61  70.66 34.82 16.35
row2: 28.26  34.82  38.27  40.1 38.27 23.7
row3: 10.54  16.35  23.7   38.98 40.1 38.98

-----------------------------------------------------------------------
eigen.c/jacobi.c:
 there are two conflicting
  egvorder(), egvorder2()
  transpose(), transpose2()
 both used in i.pca and i.cca. Header different, functionality identical.
 To be merged.
 -> some cleanup done by Glynn
